/*
 * Copyright (c) 2016 EEFUNG Software Co.Ltd. All rights reserved.
 * 版权所有(c)2016湖南蚁坊软件有限公司。保留所有权利。
 */

package com.zidian.leader.common.util;

import android.os.Environment;

import java.io.File;

/**
 * 处理文件的相关方法
 * 提供获取错误日志储存路径方法 删除某储存文件等
 * Created by Zuo Ji on 2015/10/13.
 */
public class FileUtils {

    private static final String LOG_FILE_NAME = "Oplate_Android_Mobile_Error_Log.txt";

    private static final String COMPANY_PATH = "/eefung";

    private static final String PROJECT_PATH = "/oplate";

    private static final String LOG_PATH = "/logs";

    private static File logsFile;



    /**
     * 获取根目录下的项目对应的文件夹
     *
     * @return 项目对应文件夹
     */
    private static File getProjectFile() {
        boolean sdCardExist = Environment.getExternalStorageState().equals(
            Environment.MEDIA_MOUNTED); // 判断sd卡是否存在
        File sd;
        if (sdCardExist) {
            sd = Environment.getExternalStorageDirectory(); // 获取跟目录
        } else {
            sd = Environment.getRootDirectory(); // 获取跟目录
        }
        String companyPath = sd.getPath() + COMPANY_PATH;
        File company = new File(companyPath);
        if (!company.exists()) {
            company.mkdir();
        }

        String projectPath = company.getPath() + PROJECT_PATH;
        File project = new File(projectPath);
        if (!project.exists()) {
            project.mkdir();
        }

        return project;
    }



    /**
     * 获取保存日志错误信息的文件
     *
     * @return 错误日志 file
     */
    public static File getLogsFile() {
        if (logsFile == null) {
            File projectFile = getProjectFile();
            String logsPath = projectFile.getPath() + LOG_PATH;
            File logsDir = new File(logsPath);
            if (!logsDir.exists()) {
                logsDir.mkdirs();
            }
            logsFile = new File(logsDir, LOG_FILE_NAME);
        }
        return logsFile;
    }



    /**
     * 提供了删除某个文件的方法
     *
     * @param file 需要删除的文件
     */
    public static void deleteFile(File file) {
        if (file != null && file.exists()) { // 判断文件是否存在
            if (file.isFile()) { // 判断是否是文件
                file.delete(); // 删除该文件;
            } else if (file.isDirectory()) { // 否则如果它是一个目录
                File[] files = file.listFiles(); // 声明目录下所有的文件或文件夹 files[];
                if (files != null && files.length != 0) {
                    for (File deleteFile : files) { // 遍历目录下所有的文件
                        deleteFile(deleteFile); // 把每个文件 用这个方法进行迭代
                    }
                }
            }
        }
    }
}
